SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
create PROCEDURE [dbo].[paChequearIniciodeLicencia34postmultiple]
@IdCola INT,
@CausaDeError INT,
@Resultado INT OUTPUT,
@Diagnostico VARCHAR(1000) OUTPUT
AS
SET NOCOUNT ON
SET DATEFORMAT dmy
PRINT 'pasa chequeo especifico'
DECLARE @SitRev INT
DECLARE @Fecha1 DATETIME, @Fecha2 DATETIME, @UTCAntMin INT, @UTAntMin INT, @Agente INT, @AntiguedadMinima INT, @Enfermedad INT, @Licencia INT
DECLARE @UTDurMax INT, @FechaAEvaluar DATETIME, @SubServicio INT, @Dias INT, @DuracionMax INT, @FechaProbableDeTermino DATETIME

SELECT @Enfermedad = Enfermedad, @SubServicio = Servicio FROM tb_PlazasDeMovimiento WHERE IdCola = @IdCola

SELECT @Fecha1 = Fecha1, @Fecha2 = Fecha2, @Agente = Agente, @Licencia = Licencia, @FechaProbableDeTermino = FechaTermino, @SitRev= SitRev 
FROM tb_ColaDeMovimientos WHERE IdCola = @IdCola

SELECT @UTCAntMin = UTCAntiguedadMinima, @UTAntMin = UTAntiguedadMinima, @UTDurMax = UTDuracionMaxima 
FROM tb_Licencias WHERE IdLicencia = @Licencia

SELECT @Dias = 0
SELECT @AntiguedadMinima = 0
SELECT @DuracionMax = 100

IF @Fecha2 IS NULL
	IF @FechaProbableDeTermino IS NOT NULL
		SELECT @FechaAEvaluar = @FechaProbableDeTermino
	ELSE
		SELECT @FechaAEvaluar = GETDATE()
ELSE
	SELECT @FechaAEvaluar = @Fecha2
--Verificar con certificado medico q este embarazada // Embarazo enfermedad=16868
SET @Enfermedad=16868
DECLARE @feciniemb DATETIME
DECLARE @fechaterm DATETIME
SET @feciniemb = (SELECT CertificadoDesde from tb_CertificacionesMedicas WHERE Agente=@Agente AND Licencia=@Licencia AND Enfermedad=@Enfermedad)
SET @fechaterm= (GETDATE()+100)
SET @FechaAEvaluar= @fechaterm
-- Verifico la antiguedad minima que permite la licencia teniENDo en cuenta la UT y la UTC
DECLARE @antiguedad INT
DECLARE @fecha datetime
-- En el Año
IF @UTCAntMin = 1
	BEGIN
	SELECT @fecha = CAST('01/01/'+CAST(YEAR(@Fecha1) AS VARCHAR(4)) AS DATETIME)
	END
-- En el año de servicio?
IF @UTCAntMin = 2
	BEGIN
	SELECT @fecha  = DATEADD(DAY, -365, @Fecha1)
	END
-- en Total
IF @UTCAntMin = 6
	SELECT @fecha = MIN(FechaAlta) FROM tb_ServiciosAgentes WHERE Agente = @Agente group by Agente
-- En el Decenio
IF @UTCAntMin = 5
	BEGIN
	SELECT @fecha='01/01/'+CONVERT(VARCHAR,DATEPART(YEAR,@Fecha1)-9)
	END
-- En el Bieño
IF @UTCAntMin = 4
	BEGIN
	SELECT @fecha = '01/01/'+CONVERT(VARCHAR, YEAR(@Fecha1)-1)
	END
-- En el mes calENDario
IF @UTCAntMin = 3
	BEGIN
	SELECT @fecha='01/'+CONVERT(VARCHAR,DATEPART(MONTH,@Fecha1))+CONVERT(VARCHAR,DATEPART(YEAR,@Fecha1))
	END
--Si la antiguedad se mide en dias Corridos
IF @UTAntMin  = 1
	BEGIN
	EXEC spAntiguedadAgente @Agente, @fecha, @Fecha1, @antiguedad output
	END
ELSE
	EXEC spAntiguedadAgenteHab @Agente, @fecha, @Fecha1, @antiguedad output
-- Verifica la duracion maxima de la licencia. Si no se especifica la fecha de baja se agrega un mensaje de alerta
-- Miro si el sub servicio anterior tambien tenia la misma licencia...
DECLARE @F1 DATETIME
IF @FechaAEvaluar IS NOT NULL
	BEGIN
	IF (SELECT Licencia FROM tb_SubServiciosAgentes WHERE idSubServicio = @SubServicio) = @Licencia
	BEGIN
		IF (@UTDurMax = 1)
		BEGIN
			SELECT @F1 = FechaAlta FROM tb_SubServiciosagentes WHERE idSubServicio = @SubServicio
			SELECT @dias = DATEDIFF(DAY, @F1, @Fecha1)
		END
		ELSE
		BEGIN
			SELECT @F1 = FechaAlta FROM tb_SubServiciosAgentes WHERE idSubServicio = @SubServicio
			EXEC @dias = spDIFDiasHabiles @Fecha1, @FechaAEvaluar
		END
	END		
	IF (@UTDurMax = 1)
		SELECT @dias = @dias+DATEDIFF(DAY, @Fecha1, @FechaAEvaluar)
	ELSE
	BEGIN
		DECLARE @dias2 INT
		EXEC @dias2 = spDIFDiasHabiles @Fecha1, @FechaaEvaluar
		SELECT @Dias = @dias + @dias2
	END

END

--SELECT @AntiguedadMinima AntiguedadMinima, @Antiguedad Antiguedad, @Dias Dias, @DuracionMax DurMax, @CausaDeError

IF @AntiguedadMinima > @Antiguedad AND ( (@Enfermedad IS NULL) OR (@Enfermedad IS NOT NULL AND @Enfermedad NOT IN (SELECT IdEnfermedad FROM tb_Enfermedades WHERE NoCuentaAntiguedadParaLicencia = 'S')))  AND @CausaDeError = 19
	SELECT @Resultado = 1,@Diagnostico ='*'+'El agente tiene '+CONVERT(VARCHAR, @antiguedad)+' dias de servicio. Para gozar la licencia se necesitan mas de '+CONVERT(VARCHAR, @AntiguedadMinima)
ELSE
	IF @Dias > @DuracionMax AND @CausaDeError = 19
		SELECT @Resultado = 1,@Diagnostico ='*'+'El agente se tomaria '+CONVERT(VARCHAR, @dias)+' dias y no puede tomarse mas de  '+CONVERT(VARCHAR, @DuracionMax)
	ELSE
		IF @antiguedadminima < @antiguedad AND @Dias < @duracionmax AND @CausaDeError = 19
			SELECT @resultado = 0, @diagnostico = ''
GO
